Virtualization is being rapidly adopted across the information technology industry. Virtualization generally allows any number of virtual machines to run on a single physical machine, with each virtual machine sharing the resources of that one physical machine. Different virtual machines can run different operating systems and multiple applications on the same physical computer. Virtualization may be implemented by inserting a layer of software directly on the computer hardware in order to provide a virtual machine monitor or “hypervisor” that allocates hardware resources of the physical computer dynamically and transparently. The hypervisor affords an ability for multiple operating systems to run concurrently on a single physical computer and share hardware resources with each other.
Commercially available virtualization software such as VMware® vSphere™ may be used to build complex virtual infrastructure, including private and public cloud computing and storage systems, distributed across hundreds of interconnected physical computers and storage devices. Such arrangements advantageously avoid the need to assign servers, storage devices or network bandwidth permanently to each application. Instead, the available hardware resources are dynamically allocated when and where they are needed. High priority applications can therefore be allocated the necessary resources without the expense of dedicated hardware used only at peak times.
As virtual infrastructure becomes more complex and more widely distributed over larger numbers of physical machines, it is becoming increasingly difficult to ensure that information technology resources are being utilized efficiently. For example, in an enterprise private cloud environment, conventional techniques for allocating resources among users and business units and tracking utilization of such resources are often non-standardized and haphazard. In a typical scenario, enterprise private cloud users have to make their resource requirements personally known to an IT administrator, which can create a significant bottleneck in the allocation process. Also, at least in part due to the inefficiency of the resource allocation process, users tend to hold their allocated resources much longer than they actually need to, which can lead to considerable wastage of resources. These and other difficulties in allocation of resources and tracking of resource utilization among users and business units can prevent the enterprise from charging its business units based on their actual resource utilization.